package com.suxiaoxiao.springbootlearn.designpattern.commandpattern.commands;

/**
 * 组合命令
 * @author 、
 */
public class MacroCommand implements Command {

    /**
     * 命令集合
     */
    Command[] commands;

    public MacroCommand(Command[] commands) {
        this.commands = commands;
    }

    @Override
    public void execute() {
        /**
         * 这里我们使用的是数组，具有随机访问能力，所里这里用普通的 for 循环要比 增强 for 循环要好。
         */
        for (int i = 0; i < commands.length; i++) {
            commands[i].execute();
        }
    }

    @Override
    public void undo() {
        for (int i = 0; i < commands.length; i++) {
            commands[i].undo();
        }
    }
}
